
#ifndef __lidar209_POINTCLOUD_POINT_TYPES_H
#define __lidar209_POINTCLOUD_POINT_TYPES_H

#include <pcl/point_types.h>

namespace lidar209_pointcloud
{
/** Euclidean lidar209 coordinate, including intensity and ring number. */
struct PointXYZIR
{
  PCL_ADD_POINT4D;                    // quad-word XYZ
  float    intensity;                 ///< laser intensity reading
  float    range;
  float    v_angle;
  float    h_angle;
  float    wendu;
  int     laserid;                      ///< laser ring number
  unsigned int point_time;
  EIGEN_MAKE_ALIGNED_OPERATOR_NEW     // ensure proper alignment
} EIGEN_ALIGN16;

}; // namespace lidar209_pointcloud


POINT_CLOUD_REGISTER_POINT_STRUCT(lidar209_pointcloud::PointXYZIR,
                                  (float, x, x)
                                  (float, y, y)
                                  (float, z, z)
                                  (float, intensity, intensity)
                                  (float, range, range)
                                  (float, v_angle, v_angle)
                                  (float, h_angle, h_angle)
                                  (float, wendu, wendu)
                                  (int,   laserid, laserid)
                                  (unsigned int, point_time, point_time))

#endif // __lidar209_POINTCLOUD_POINT_TYPES_H

